Banks

Strings Bank

  • The strings bank is a special bank which contains the string lookup of event path to GUID. The strings bank functions identically to a normal bank, except that it never contains sample data or streaming sample data.

Master Bank

  • Master banks contain the global mixer and are required for creating instances of events, regardless of which bank the event's metadata and sample data exist in. At least one master bank should remain loaded at all times.

  • Contains event metadata and references to sample assets.

Using

  • When a bank is fully loaded, all metadata in that bank can be accessed. This means that event descriptions can be found with Studio::System::getEvent, and instances created from those descriptions.

  • The bank loading state can be queried with Studio::Bank::getLoadingState.

  • System_LoadBankFile(... Master.strings.bank ...)  β€” loads the string bank. The .strings.bank  contains the runtime string table that maps human-readable paths like "event:/Snow_Footsteps"  to the event GUIDs. System_GetEvent(system, "event:/...")  resolves by path, so the path lookup needs that string table available; if the strings bank is not loaded, path lookup fails (or returns an invalid EVENTDESCRIPTION). That’s why load .strings.bank  before attempting System_GetEvent  by name.

    • If you want to avoid loading .strings.bank  at runtime, you can resolve events by GUID instead of by path (look up GUID at build time and call the Get-by-ID function). But using paths requires .strings .bank.

  • System_LoadBankFile(... Master.bank ...)  β€” loads the main bank containing event metadata and references to sample data. This is required to create instances of events.

  • If you start playback before samples are ready, playback may fail or be silent. FlushSampleLoading  is the usual way to wait; you can also poll bank loading state if you want non-blocking startup.

  • System_Update  must be called regularly (once per frame / tick). FMOD Studio needs that to process the audio graph, update 3D, DSP, etc.

  • You only need Bank_LoadSampleData  / Bank_UnloadSampleData  for banks that contain sample data (audio).

    • Master.strings.bank  holds only the string table (path β†’ GUID) so loading/unloading sample data for it is unnecessary.

  • System_FlushSampleLoading  is a system-wide wait for all async sample loads to finish; use it after queuing Bank_LoadSampleData  when you need the audio ready immediately.